Digital equalization process and mechanism

ABSTRACT

A filter is created by sampling noise during an inter-frame gap ( 110 ) of a received signal, sampling a data frame preamble ( 115 ) from within a data frame ( 105 ) of the received signal, and computing filter coefficients based on the noise sampled during the inter-frame gap ( 110 ) and the data frame preamble ( 115 ) sampled from within the data frame ( 105 ).

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. Provisional Application No.60/311,081, filed Aug. 10, 2001, and titled “Digital EqualizationProcess and Mechanism,” which is incorporated by reference.

TECHNICAL FIELD

This disclosure relates to data communications over noisy media withfrequency-dependent attenuation.

BACKGROUND

In data communications, wideband transmission may be used. However, thereceived signal may be impaired by noise and frequency-dependent channelattenuation. For example, an entire portion of the transmitted signalmay fall into an attenuation null and be severely attenuated. Inaddition, the intersymbol interference (ISI) could degrade the signalcausing a high bit error rate which may render an error correctionengine useless.

SUMMARY

In one general aspect, a filter is created by sampling noise during aninter-frame gap of a received signal, sampling a data frame preamblefrom within a data frame of the received signal, and computing filtercoefficients based on the noise sampled during the inter-frame gap andthe data frame preamble sampled from within the data frame.

Implementations may include one or more of the following features. Forexample, the filter may be structured and arranged to filter receivedsignals communicated across power lines.

The received signal may be synchronized to identify the data framepreamble. The received signal may be synchronized by sampling a randomlylocated portion of the received signal, generating a pre-filter based onthe randomly located portion of the sampled received signal, applyingthe pre-filter to the received signal, and identifying the data framepreamble based on the received signal after applying the pre-filter.

The filter coefficients may be computed by generating noise filtercoefficients from the noise sampled during the inter-frame gap,generating channel filter coefficients from the data frame preamblesampled from within the data frame, and generating the filtercoefficients based on the noise filter coefficients and the channelfilter coefficients. The noise filter coefficients may be generated fromthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.

The channel filter coefficients may be generated by identifying channelfilter coefficients based on a threshold criteria and updating thechannel filter coefficients that are identified based on the thresholdcriteria. The channel filter coefficients may be updated by performingan excision algorithm. The channel filter coefficients may be updated bymodifying the channel filter coefficients. The channel filtercoefficients may be modified by reducing a magnitude of the channelfilter coefficients that are identified based on the threshold criteria.

Additionally or alternatively, the channel filter coefficients may beupdated by performing a smoothing algorithm. The channel filtercoefficients may be updated by replacing the channel filter coefficientswith replacement channel filter coefficients.

In one implementation, the replacement channel filter coefficients mayinclude channel filter coefficients not identified based on thethreshold criteria.

In another general aspect, adaptively filtering a data frame of areceived signal includes generating coefficients for an adaptive filterbased on at least noise from within an inter-frame gap and a preamble ofthe data frame and filtering the data frame by applying the adaptivefilter to the data frame.

Implementations may includes one or more of the following features. Forexample, the data frame may be communicated across power lines such thatthe data frame may be filtered by applying the adaptive filter to thedata frame that is communicated across the power lines.

The coefficients for the adaptive filter may be generated by samplingnoise during an inter-frame gap of a received signal, sampling a dataframe preamble from within a data frame of the received signal, andcomputing filter coefficients based on the noise sampled during theinter-frame gap and the data frame preamble sampled from within the dataframe.

The received signal may be synchronized to identify the data framepreamble. The received signal may be synchronized by sampling a randomlylocated portion of the received signal, generating a pre-filter based onthe randomly located portion of the sampled received signal, applyingthe pre-filter to the received signal, and identifying the data framepreamble based on the received signal after applying the pre-filter.

The filter coefficients may be computed by generating noise filtercoefficients from the noise sampled during the inter-frame gap,generating channel filter coefficients from the data frame preamblesampled from within the data frame, and generating the filtercoefficients based on the noise filter coefficients and the channelfilter coefficients. The noise filter coefficients may be generated fromthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.

The channel filter coefficients may be generated by identifying channelfilter coefficients based on a threshold criteria and updating thechannel filter coefficients that are identified based on the thresholdcriteria. The channel filter coefficients may be updated by performingan excision algorithm. The channel filter coefficients may be updated bymodifying the channel filter coefficients. The channel filtercoefficients may be modified by reducing a magnitude of the channelfilter coefficients that are identified based on the threshold criteria.

Additionally or alternatively, the channel filter coefficients may beupdated by performing a smoothing algorithm. The channel filtercoefficients may be updated by replacing the channel filter coefficientswith replacement channel filter coefficients. In one implementation, thereplacement channel filter coefficients may include channel filtercoefficients not identified based on the threshold criteria.

In another general aspect, a filter is derived from a combination ofcoefficients. The coefficients used to derive the filter includecoefficients derived from noise sampled during a period between dataframes and a received data frame preamble and coefficients derived fromthe received data frame preamble and a transmitted data frame preamble.

Implementations may include one or more of the following features. Forexample, the coefficients derived from the noise may include an averageof the coefficients derived from the noise over a period of time. Thecoefficients derived from the received data frame preamble may includean average of the coefficients derived from the data frame preamble overa period of time. The filter derived from the combination of thecoefficients may include an average of the filters derived from thecombination of the coefficients over a period of time. The coefficientsderived from the noise may include an average of the noise over a periodof time. The coefficients derived from the received data frame preamblemay include an average of the data frame preamble over a period of time.

In another general aspect, receiving a signal transmitted through atleast first and second communication paths over a single communicationmedium includes sampling the signal over the communication paths torealize a first sampling from the first communication path and a secondsampling from the second communication path, synchronizing the firstsampling and the second sampling, and combining the first sampling andthe second sampling to generate a signal representative of the signaltransmitted through the first and second communication paths.

Implementations may include one or more of the following features. Forexample, the first sampling and the second sampling may be synchronizedby independently synchronizing the first sampling and the secondsampling and adjusting for a delay difference between the first and thesecond communication paths based on the independent synchronization ofthe first sampling and the second sampling. The first communication pathmay include line-neutral path. The second communication path may includea neutral-ground path.

In another general aspect, pre-filtering a received signal to improvesynchronization includes sampling a randomly located portion of thereceived signal, generating a pre-filter based on the randomly locatedportion of the sampled received signal, applying the pre-filter to thereceived signal, and identifying a data frame preamble based on thereceived signal after applying the pre-filter to improvesynchronization.

Implementations may include one or more of the following features. Forexample, sampling the randomly located portion of the received signalmay include sampling within noise and generating the pre-filter mayinclude generating the pre-filter based on the sampled noise. Thereceived signal may include data and noise. A portion of the receivedsignal may be sampled at a randomly selected location.

In one implementation, the pre-filter may include a hybrid predictionfilter that produces a desired response as an inverse of a value relatedto a portion of the received signal.

These general and specific aspects may be implemented using a system, amethod, or a computer program, or any combination of systems, methods,or computer programs.

Other features will be apparent from the description and drawings, andfrom the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of a data frame including time intervalsbefore and after the data frame.

FIG. 2 is a flow chart of an exemplary process for digital equalization.

FIG. 3 is a flow chart of an exemplary process for synchronizing anincoming bit stream.

FIG. 4 is a flow chart of an exemplary process for constructing afrequency-domain equalization and noise filter.

FIG. 5 is a flow chart of an exemplary process for computing a channelfilter.

FIG. 6 is a block diagram of a system capable of performing digitalequalization.

FIG. 7 is a block diagram of a system capable of performing datafiltering.

FIG. 8 is a block diagram of a system capable of performingpre-filtering to enhance synchronization.

FIG. 9 is a block diagram of a system capable of improving reception ofdata frames under multipath propagation.

Like reference symbols in the various drawings may indicate likeelements.

DETAILED DESCRIPTION

FIG. 1 illustrates a portion 100 of an exemplary data frame 105including time intervals before and after the frame, such as anInter-Frame Gap (IFG) 110. Data frame 105 may include bits transmittedover a communications system, including a preamble 115 and a dataportion 125. The preamble 115 may include a synchronization preamblehaving a number of bits that are at the beginning of each data frame105. Additionally or alternatively, preamble 115 may be located at thebeginning of a data block, which may include several data portions 125arranged in series (now shown). The preamble 115 may be used by areceiver to lock and to synchronize with the bit timing of atransmitter. A received signal may include any data, data gaps, andnoise received, such as, for example, data frame 105, IFG 110, noise120, preamble 115, and data 125.

IFG 110 may include a gap between data frames 105 in which data 125typically is not transmitted. IFG 110 may include noise 120, e.g.,resulting from a time interval with no transmitted data.

In general, a network system that transmits and receives datacommunications may detect the data frame 105 to perform processes suchas, for example, digital equalization and filtering. For example, it maybe desirable to construct noise filters and to instantaneously adapt theequalization and noise filters on a frame-by-fame basis. Byinstantaneously adapting the equalization and the noise filters on aframe-by-frame basis, the need for memory of the filter outside of thecurrent data frame 105 and dependency on the previous data frame 105 maybe reduced or eliminated altogether.

In one implementation, frequency-domain equalization may be used toretrieve the transmitted data over a noisy transmission channel withfrequency-dependent attenuation (e.g., impairments of white noise,periodic noise, multipath propagation, and different impedances). Afilter may be designed to reduce or eliminate the noise, correct for thechannel distortion and the channel attenuation, and/or compensate forthe ISI.

In this implementation, the desired equalization and filtering may beaccomplished by using the IFG 110 to sample the noise, and then use thecaptured noise and the preamble 115 to construct a filter (e.g., anoptimal Wiener filter).

FIG. 2 illustrates a process 200 for digital equalization. Process 200typically includes synchronizing an incoming data frame (step 210),constructing a frequency-domain equalization and noise filter (step220), and applying the filter to the frame from which it wasderived/constructed (step 230).

In general, synchronizing the incoming frame (step 210) includesreceiving a signal and locating a frame, namely, identifying thebeginning and/or the end of the frame. Various modulation schemes may beused in transmitting and receiving bit streams. In one exampleimplementation, a binary phase shift keying (BPSK) modulation scheme maybe used, however, other modulation schemes are also available forapplication to the digital equalization process.

For synchronization (step 210), the incoming signal may be over-sampled(e.g., by a factor of N) and an algorithm (e.g., a maximal likelihoodalgorithm) may be used to estimate the incoming bit value. The receivedbit sequence (e.g., a 64-bit preamble) then may be correlated to thepredefined and stored transmitted bit sequence and submitted to decisionlogic that may determine if the sequence corresponds to the predefinedtransmitted preamble. The synchronization process 210 may be performedat the receiving location of the incoming bit stream. For example, thesynchronization 210 may occur at a receiver circuit located at thereceiving location. Synchronization process 210 may be used to maintainproper bit timing at the receiver location. Synchronization process 210may involve locating a sync position (e.g., locating the preamble). Byidentifying the beginning and/or the end of the frame in thesynchronization (step 210), the IFG may be located and noise within theIFG may be sampled in step 220.

Constructing the frequency-domain equalization and noise filter (step220) may include using one or more samples of the noise in the IFG, thereceived preamble, and the transmitted preamble. Once the incoming framehas been synchronized (step 210), the noise may be sampled and one ormore filters may be computed and constructed. For instance, twocomplementary filters may be computed (e.g., a noise filter and achannel filter). A combination of the noise filter and the channelfilter may be used to generate a filter, such as a Wiener filter or someother filter capable of being used as an optimal filter. Additionallyand/or alternatively, the construction of the filter (step 220) mayinclude using an average of samples of the noise in the IFG, thereceived preamble, the transmitted preamble, and/or constructed filtersover a period of time.

Applying the filter to the frame from which it was derived (step 230)may include multiplying the filter coefficients by the incoming dataframe. Examples of the processes described by steps 210 and 220 aredescribed below in more detail with respect to FIGS. 3 and 4-5,respectively.

FIG. 3 is an expansion of the synchronization process 210 from FIG. 2.FIG. 3 typically includes sampling the incoming signal (step 310),estimating the incoming bit value (step 320), and correlating thereceived bit sequence (e.g., the 64-bit preamble) to a predefined bitsequence that was transmitted as the preamble (step 330).

Over-sampling the incoming signal (step 310) may include over-samplingthe incoming signal by a factor of N. Over-sampling of the signal (step310) may be performed by an analog-to-digital converter (ADC), or byanother circuit capable of over-sampling an incoming signal. Estimatingthe incoming bit value (step 320) may include demodulating theover-sampled incoming data into a single binary bit stream. Correlatingthe received bit sequence (step 330) may include correlating theover-sampled incoming data stream against a stored copy of thetransmitted bit wave form. For example, in step 330, the incoming datastream may be correlated against a sine wave. For a more detaileddescription of the synchronization process 210, section 5.1 Synchronizeris provided below, which includes subsections 5.1.1 Demodulator, 5.1.1.1Correlator, 5.1.1.2 Threshold Function, and 5.1.2 Synchronization.

FIG. 4 illustrates one implementation of the process 220 of FIG. 2 forconstructing a frequency-domain equalization and noise filter.Constructing the filter typically includes identifying noise samples,the received preamble, and predefined transmitted preamble (step 410),computing a noise filter (step 420), a channel filter (step 430), andultimately a filter that is applied to the data frame (step 440). For amore detailed description of the filter construction process, section5.2 Filter is provided below with subsections 5.2.1 Noise Filter,5.2.1.1 Noise Filter Computation, 5.2.2 Channel Filter, 5.2.2.1 RawChannel Filter Computation, 5.2.2.2 Excision, and 5.2.2.3 Smoothing.

A channel filter may be computed (step 430) as described more fully withrespect to FIG. 5. Computing a channel filter typically includescomputing the raw coefficients (step 510), performing excision (step520) and performing smoothing (step 530). For a more detaileddescription of the channel filter construction process, sections 5.2.2.1Raw Channel Filter Computation, 5.2.2.2 Excision, and 5.2.2.3 Smoothingare provided below.

FIG. 6 illustrates a system for digital equalization. The digitalequalization system typically receives an incoming signal 610 (e.g., ananalog signal) and applies a receiver/over-sampler module (e.g., ananalog-to-digital converter) 620, a synchronizer 630, a demodulatormodule 640, a synchronization module 650, and a filter coefficientmodule 660.

5.1 Synchronizer 630

The synchronizer 630 generally is capable of detecting the preamble ofthe incoming data The synchronizer 630 typically includes twocomponents: a demodulation/correlation module (maximum likelihood at thebit level) and a synchronization module 650 (maximum likelihood for thepreamble).

5.1.1 Demodulator Module 640

The demodulator module 640 generally is capable of convertingover-sampled incoming data into a single binary bitstream of “ones” and“zeroes” (i.e., BitOut). The demodulator module 640 typically includes acorrelator 641 and a threshold detector 643.

5.1.1.1 Correlator 641

The sampled data stream from the analog-to-digital converter (ADC) 620goes into the correlator 641. For each new sample S_(j), N samples arecorrelated against a stored copy of the transmitted bit waveform 642(e.g., in one implementation, a sine wave is used). Thus, forcomparison, the transmitted bit waveform 642 is effectively moved acrossthe input data stream like a sliding window, for example, effecting thelogic of Equations 1 and 2: $\begin{matrix}{{{BitWeight} = {\sum\limits_{i = 0}^{N - 1}\quad{{{receivedBit}\quad\lbrack i\rbrack} \times {{transmittedBit}\quad\lbrack i\rbrack}}}}{with}} & \left( {{Equation}\quad 1} \right) \\{{{transmittedBit}\lbrack n\rbrack} = \left\{ {{\begin{matrix}{\sin\left( {2\pi\quad{n/N}} \right)} & {{fortransmitting}{\quad\quad}1} \\{- {\sin\left( {2\pi\quad{n/N}} \right)}} & {{fortransmitting}\quad 0}\end{matrix}n} = {{0\quad\ldots\quad N} - 1}} \right.} & \left( {{Equation}\quad 2} \right)\end{matrix}$

-   -   and where N is the over-sampling rate.

The BitWeight generated by the correlator 641 generally has a new valuefor every sample S_(j); it is forwarded to a decision logic (thethreshold detector 643) that determines if the transmitted bit is “0” or“1” based on the correlation of the sampled region to the pre-storedtransmitted bit preamble as reflected by the BitWeight.

5.1.1.2 Threshold Function

The resultant BitWeight is passed to the threshold detector 643 to beprocessed. The values are compared to defined max and min thresholds(both defaulted to “0”).

The threshold detector 643 will convert each BitWeight value into onelogical data bit value. This process is shown in the following equation:If (BitWeight > max_threshold)   BitOut = 1;        //the received bitis a “1” If (BitWeight < min_threshold)   BitOut = 0;        //thereceived bit is a “0” Else   BitOut = random generated 0 or 1 //nodecision can be made                          (Equation 3)

5.1.2 Synchronization Module 650

The synchronization module 650 detects the beginning and/or the end ofthe frame. For each new sample S_(j), the receiver 651 receives theBitOut sequence and the comparing device 653 computes the Hammingdistance, d_(j), between the received symbol sequence (receivedpreamble) and the transmitted symbol sequence (transmitted preamble).The smallest value of d_(j) for all samples S_(j) is called the minimumdistance d_(minfolding), which may be used to indicate the frameposition (e.g., a maximum likelihood detection). The position j forwhich the Hamming distance is lowest generally is considered the syncposition.

The value of the Hamming distance may be passed to the folding functionmodule 654 which may convert the Hamming distance from a [0 . . . 64]range number (e.g., a number corresponding to the number of bits in thepreamble) into “Folded Hamming distance” which includes a [0 . . . 32]range number according to the following equation: if Hamming distance >32 then   Folded Hamming distance = 64 − Hamming distance else   FoldedHamming distance = Hamming distance.

The folding function module 654 enables the detection of both positiveand negative phases of the transmitted signal. For example, a phaseinversion may occur if the transmitter or receiver is incorrectlyplugged into a power outlet. In this instance, the transmitted bits maybe inverted in sign causing a “match” condition to correspond to maximumHamming distance values instead of the minimum Hamming distance values.By folding the Hamming distance, both positive and negative phases ofthe transmitted signal may be detected by examining the minimum Hammingdistance values. The position for which the Folded Hamming distance isminimal d_(minfolding) may be considered as the sync position.

5.2 Filter Coefficient Module 660

The Filter Coefficient Module 660 generates frequency-domaincoefficients that will be used to filter the received data stream thatare useful in recovering the information content of the transmitteddata. In one implementation, for example, the filter coefficient module660 also may be implemented using an Adaptive Filter Coefficient Engine(AFCE).

In one implementation, the coefficient generation includes determinationof channel, noise filters, and ultimately the complex multiplication(i.e., frequency-domain operation) of the channel and noise filters, asdescribed below with respect to Equation 4.FilterCoeffs(f)=ChannelFilter(f)×NoiseFilter(f)  (Equation 4)

5.2.1 Noise Filter 661

The noise filter generation module 661 may include a filter capable ofminimizing the effect of the noise generated by the transmissionchannel. The noise filter generation module 661 generally is based, atleast in part, on a sampling of noise from within the quiet period whereno data is transmitted, which generally precedes the preamble. It alsomay be based on data within the preamble identified throughsynchronization. The sampled noise and/or preamble generally arecombined to construct the noise filter itself. This approach is valid aslong as the frame length is short enough that the noise could beconsidered as quasistationary for the frame duration. For the purposesof this example implementation, it may be assumed that the noise isuncorrelated to the data and that the noise is consideredquasistationary for the frame duration.

5.2.1.1 Noise Filter Computation

The noise filter may be computed based on equation 5: $\begin{matrix}{{{NoiseFilter}(f)} = \frac{{{{received}\quad{{preamble}(f)}}}^{2} - {{{noise}(f)}}^{2}}{{{{received}\quad{{preamble}(f)}}}^{2}}} & \left( {{Equation}\quad 5} \right)\end{matrix}$

-   -   where |received preamble(f)|² represents the power of individual        frequency components comprising the discrete spectrum for the        received preamble and where |noise(f)|² may be determined using        equation 6:        |noise(f)|²=min(|noiseRx _(—)1(f)|² , |noiseRx _(—)2(f)|,² . . .        , |noiseRx _(—) k(f)|²)  (Equation 6)    -   where |noiseRx_(f)|², |noiseRx_(—)2(f)|², . . . ,        |noiseRx_k(f)|² are obtained based on noise snapshots from        within the IFG, and k is the number of noise blocks that are        captured. As equation 6 is based on the minimum of the power of        the individual noise frequency components of the noise streams,        it represents a conservative approach (i.e., versus using an        average) to characterizing the noise for the noise filter        computation. If k is too large, the |noise(f)|² component may        tend toward “0” for all frequencies counteracting the effect of        this conservative characterization of noise. As such, k        generally is set to a relatively small value, e.g., 3.

5.2.2 Channel Filter 662

The channel filter 662 may be a filter capable of characterizing thechannel and compensating for the channel attenuation and distortion. Thechannel may be characterized by comparing the received preamble spectrumagainst the transmitted preamble spectrum. Then, the raw channel filtermay be computed by dividing the spectrum of the transmitted preamble bitsequence by the spectrum of the received preamble bit sequence.

Once the raw channel filter has been obtained, additionalsteps/processing may be performed to eliminate additional interference(e.g., the narrow band interference) and to increase the accuracy of theestimate in the presence of noise.

5.2.2.1 Raw Channel Filter Computation Module 6621

One possible equation for computing the raw channel filter is describedas follows. The channel filter 662 may be computed based onfrequency-domain division (i.e. complex number division) of theprestored/predetermined transmitter preamble by the received/detectedpreamble. This is illustrated in the following equation: $\begin{matrix}{{{RawChannelFilter}(f)} = \frac{{prestored}\text{/}{predetermined}\quad{transmitted}\quad{{preamble}(f)}}{{received}\text{/}{detected}\quad{{preamble}(f)}}} & \left( {{Equation}\quad 7} \right)\end{matrix}$

For instance, the raw channel filter may be modified by post-processingfunctions identified as “excision” 6622 and “smoothing” 6623. Theexcision processing 6622 reduces the gross anomalies of the spectrum,while the smoothing processing 6623 increases the accuracy of theestimate in the presence of noise.

In the implementation described below, excision is performed beforesmoothing. However, either could be performed independently, or theorder could be reversed.

5.2.2.2 Excision Module 6622

Excision 6622 may be used to significantly improve the signal-to-noiseratio by eliminating the narrow-band interference at the receiver.Several excision algorithms generally are known to those of ordinaryskill, as have been described. See Analysis of DFT-Based FrequencyExcision Algorithms for Direct-Sequence Spread-Spectrum Communications.IEEE Transactions on Communications, vol. 46, No. 8, August 1998.Jeffrey A. Young, and James S. Lehnert.

When using the excision algorithm, the frequency bin(s) to be excisedis/are generally identified according to their relative ranking under apredetermined ranking scheme, and the magnitude and method of excisionor notching is determined.

In one implementation, the frequency bins having a power value thatplaces them within a selectively high percentage (e.g., the top Mpercent) of the frequency bins are identified for excision, during whichthe power values for those frequency bins are reduced by a selectableamount or ratio (e.g., half). More specifically, according to oneexemplary implementation of the excision module 6622, power values forthe raw channel filter coefficients 6621 are calculated and sorted, andthe top M percent of the raw channel filter coefficients are selectedand divided by two.

An example implementation is illustrated in the following equation: if(RawChannelFilter(f_(i)) * noiseFilter(f_(i))) in top M % then    ExcisedChannelFilter(f_(i)) = ExcisedChannelFilter(f_(i))/2   Else    ExcisedChannelFilter(f_(i)) = ExcisedChannelFilter(f_(i))              i = 0...size of the FFT filter − 1

In this implementation, the excised channel filter spectrum is subjectto a smoothing function following the excision.

5.2.2.3 Smoothing Module 6623

The smoothing function performed by smoothing module 6623 can besummarized by the following logic:

-   -   if the power of the |ExcisedChannelFilter(f_(i))|² component is        greater than the power of the |ExcisedChannelFilter(f_(i+1))|²        component, then the final channel filter for bin “i” will be        assigned the ExcisedChannelFilter(f_(i+1)) bin value.

An algorithm implementing this logic is as follows:if|ExcisedChannelFilter(f_(i))|² ≦ |ExcisedChannelFilter(f_(i+1))|² channelFilter(f_(i)) = ExcisedChannelFilter(f_(i)) else channelFilter(f_(i)) = ExcisedChannelFilter(f_(i+1))

-   -   where f_(i) cover both the negative and the positive spectrum of        the signal.

In one implementation, following calculation of the noise filtercoefficients and the channel filter coefficients, a multiplier 663 maybe used to generate the ultimate coefficients by performing complexmultiplication of the channel and noise filter coefficients, asdescribed above with respect to equation 4, such that a filter may beconstructed using the filter computation module 670.

5.2.3 Data Filtering

FIG. 7 illustrates an overview of the system 700 used to generate andapply a filter. In one implementation, the overlap-save method may beused to filter the data. The overlap-save method performs a linearconvolution between a finite-length sequence (the channel filtercoefficients) and an infinite-length sequence (the data) byappropriately partitioning the data. This type of data filtering methodgenerally includes an input module 710, which receives the input datax(n). The input module 710 may concatenate new input data x(n) with oldinput data. The concatenated data may be sent to a first Fast FourierTransform (FFT) module 720, where it is used to produce an output X(f).

Component parts of the input data x(n) (e.g., a preamble (n) and noise(n)) may be received at a filter coefficient computation module 730. Thefilter coefficient computation module 730 also may receive, as input, acopy of the transmitted preamble 740. The filter coefficient computationmodule 730 computes the appropriate filters and sends its output to asecond FFT module 750, which outputs coeff (f). The output X(f) from thefirst FFT module 720 is multiplied with the output coeff (f) from thesecond FFT module 750 at multiplier module 760.

The output of multiplier module 760 Y(f) is received at an Inverse FFTmodule 770, where an inverse FFT process may be performed. The result ofthe inverse FFT process is saved in a buffer module 780 and the outputfiltered data y(n) is produced.

Additional improvement(s) and a lower Bit Error Rate may be obtained bypre-filtering the incoming raw data and/or adding additional hardwarethat further solves the multipath propagation problem.

6.1 Pre-Filtering

Pre-filtering may be performed independently and exclusively, or, inconjunction with of any other filtering processes, such as the filteringprocesses described above.

As described in section 5.2, the filter coefficient computation may beperformed by constructing a channel inverse. This computation generallyrequires synchronization on the raw signal. Indeed, if the signal isjammed or severely corrupted by noise (e.g., white noise, periodicnoise, etc.), the synchronizer could fail and the frame synchronizationmay not be detectable.

In one implementation, the raw data may be pre-filtered to improve thesynchronization capability and thus improve the filter/equalizerperformance (section 5.2). Indeed, since the filter/equalizer processuses the raw received preamble to compute the channel inverse, thecomputed filter coefficients will generally improve with improvements toestimates of the preamble position (the sync position).

More specifically, to pre-filter, the dead time between the blocks maybe used to sample the noise and to construct an adaptive noise-cancelingfilter that is helpful in making preamble bits more identifiable.

Several noise filters could be used for this purpose. For instance, inone implementation, a noise filter used for pre-filtering includes ahybrid version of a “Prediction” filter, where the desired response forthe adaptive filter is the inverse of the present input signal value.

FIG. 8 illustrates an example implementation of a pre-filtering system.The pre-filtering system of FIG. 8 receives an input signal u(t) that isreceived at delay module 810, and includes an adaptive filter module 820and a summation module 830.

In this implementation, the following notations are used forconvenience:

-   -   s=transmitted signal (uncorrupted by noise),    -   n=channel noise (white noise, periodic noise . . . ),    -   ñ=estimate of the channel noise,    -   u=input applied to the adaptive filter,    -   y output of the adaptive filter,    -   d=desired response of the filter,    -   e=−(y+d)=estimation error.

This adaptive filter 820 predicts the inverse of the present value ofthe random input signal, even though past values of the signal supplythe input applied to the adaptive filter. The present value of thesignal serves the purpose of the desired response for the adaptivefilter 820.

When the filter adaptation algorithm (e.g., least mean square algorithm)is enabled, the adaptation process is designed to cancel the inputsignal u(t) by adjusting the filter coefficients such that y(t)=u(t)+thefilter output=“0”. Assuming that during this adaptation process, u(t)was selected such that it is equal to the noise in the transmissionchannel (i.e. u(t)=n(t)=the sampled noise during the dead time betweenthe frame(s)), the adaptation process will basically construct anoise-canceling filter that cancels the transmission channel noise suchthat y(t)=n(t)−ñ(t)≅0.

Once the adaptation process is complete, the adaptation algorithm may bedisabled and the obtained filter coefficients locked. Assuming that thenoise is quasistationary for the frame duration (see assumption above),the obtained filter could then be considered as a noise-canceling filterthat is continuously predicting the inverse of the noise in thetransmission channel y(t)=n(t)−ñ(t)≅0. Thus, when data is transmittedu(t)=s(t)+n(t) the filter will cancel the noise n(t) and let pass thetransmitted data such that y(t)=s(t)+n(t)−ñ(t)≅s(t).

In another implementation of a pre-filter, for example, if during theperiod of the preamble, u(t) is selected such that it is equal to thetransmitted preamble, then the adaptation process may construct anequalization filter.

6.2 Multipath Propagation

In one implementation, a modem may be designed to transmit on two paths(e.g., a first may be a Line-Neutral path and a second may be aNeutral-Ground path). In theory, the transmitted data (e.g., equalizedsignals) could be recovered by sampling either path. However, the twopaths may have different characteristics due to the difference in thepath loads (time-varying values), impedance differences, lengthdifferences, and/or noise levels. This frequency-selective fading of thetransmission medium could cause amplitude and delay distortion which maydegrade the system reliability beyond that expected. It therefore may bedifficult to determine which path is the best one to use to recover thetransmitted data, whether it is the first path, the second path, or acombination of both paths.

FIG. 9 illustrates one example implementation of a multipath propagationsystem capable of automatically determining which path or combination ofpaths is preferred, or optimal. The system may include structures thatautomatically probe/sample the paths (e.g., Line-Neutral 910 andNeutral-Ground 920), store the data (e.g., by using one or more buffers930 a, 930 b), and synchronize (e.g., using synchronizers 940 a, 940 b)on each path, independently. Further, once a synchronizer 940 a, 940 bhas been detected, the system automatically adjusts for the delaydifference between the paths by adjusting the read pointer in thebuffers 930 a, 930 b and then combines the data into a single datastream following gain adjustment module 950.

Indeed, assuming that the buffers are large enough, if we are able tosynchronize on both paths 910, 920 (discussed above in section 5.1), thedifference in the sync position typically is equal to the difference inthe path delays. Thus, the solution presents itself in two parts: first,the synchronizers may be used to compensate for the path delaydifferences, and second, the filter/equalizer discussed above in section5.2 may be used to compensate for the distortion. It will be understoodthat various modifications may be made without departing from the spiritand scope of the claims. For example, the order of the operations (pathselection and filtering/equalization) could be changed. Indeed, the datafiltering/equalization part could be done on each path independentlythen data could be combined.

If the attenuation/distortion on either path is too severe such that nosynchronization is possible, a single path solution may be realizedwithout any path combination. In another implementation, the addition of“combination thresholds” may refine this feature even further byenabling the two paths to be combined if and only if the quality of thereceived data on the paths is above a predefined level.

The described systems, methods, and techniques may be implemented indigital electronic and/or analog circuitry, computer hardware, firmware,software, or in combinations of these elements. Apparatus embodyingthese techniques may include appropriate input and output devices, acomputer processor, and a computer program product tangibly embodied ina machine-readable storage device for execution by a programmableprocessor. A process embodying these techniques may be performed by aprogrammable processor executing a program of instructions to performdesired functions by operating on input data and generating appropriateoutput. The techniques may be implemented in one or more computerprograms that are executable on a programmable system including at leastone programmable processor coupled to receive data and instructionsfrom, and to transmit data and instructions to, a data storage system,at least one input device, and at least one output device. Each computerprogram may be implemented in a high-level procedural or object-orientedprogramming language, or in assembly or machine language if desired; andin any case, the language may be a compiled or interpreted language.Suitable processors include, by way of example, both general and specialpurpose microprocessors. Generally, a processor will receiveinstructions and data from a read-only memory and/or a random accessmemory. Storage devices suitable for tangibly embodying computer programinstructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such asErasable Programmable Read-Only Memory (EPROM), Electrically ErasableProgrammable Read-Only Memory (EEPROM), and flash memory devices;magnetic disks such as internal hard disks and removable disks;magneto-optical disks; and Compact Disc Read-Only Memory (CD-ROM). Anyof the foregoing may be supplemented by, or incorporated in,specially-designed ASICs (application-specific integrated circuits).

Advantageous results still could be achieved if steps of the disclosedtechniques were performed in a different order and/or if components inthe disclosed systems were combined in a different manner and/orreplaced or supplemented by other components. For example, thetransmission medium may include a power line, a telephone line, a cableline, a digital subscriber line (DSL), an integrated services digitalnetwork (ISDN) line, a radio frequency (RF) medium, and/or othertransmission media. Additionally and/or alternatively, differentmodulation schemes are also available for application to the digitalequalization process. For example, a combination of modulation schemesmay be applied to different parts of the signal (e.g., one modulationscheme may be applied to the preamble and a different modulation schememay be applied to the remainder of the signal). In anotherimplementation, for example, in a multipath propagation implementation,different modulation schemes and/or combinations of different modulationschemes may be applied to each signal on the different communicationpaths. Accordingly, other implementations are within the scope of thefollowing claims.

1. A method for creating a filter, the method comprising: sampling noiseduring an inter-frame gap of a received signal; sampling a data framepreamble from within a data frame of the received signal; and computingfilter coefficients based on the noise sampled during the inter-framegap and the data frame preamble sampled from within the data frame. 2.The method as in claim 1 wherein the filter is structured and arrangedto filter received signals communicated across power lines.
 3. Themethod as in claim 1 further comprising synchronizing the receivedsignal to identify the data frame preamble.
 4. The method as in claim 3wherein synchronizing the received signal comprises: sampling a randomlylocated portion of the received signal; generating a pre-filter based onthe randomly located portion of the sampled received signal; applyingthe pre-filter to the received signal; and identifying the data framepreamble based on the received signal after applying the pre-filter. 5.The method as in claim 1 wherein computing the filter coefficientsincludes: generating noise filter coefficients from the noise sampledduring the inter-frame gap; generating channel filter coefficients fromthe data frame preamble sampled from within the data frame; andgenerating the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 6. The method as inclaim 5 wherein the noise filter coefficients are generated from thenoise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.
 7. The method as in claim 5 whereingenerating the channel filter coefficients includes: identifying channelfilter coefficients based on a threshold criteria; and updating thechannel filter coefficients that are identified based on the thresholdcriteria.
 8. The method as in claim 7 wherein updating the channelfilter coefficients includes performing an excision algorithm.
 9. Themethod as in claim 7 wherein updating the channel filter coefficientsincludes modifying the channel filter coefficients.
 10. The method as inclaim 9 wherein modifying the channel filter coefficients includesreducing a magnitude of the channel filter coefficients that areidentified based on the threshold criteria.
 11. The method as in claim 7wherein updating the channel filter coefficients includes performing asmoothing algorithm.
 12. The method as in claim 7 wherein updating thechannel filter coefficients includes replacing the channel filtercoefficients with replacement channel filter coefficients.
 13. Themethod as in claim 12 wherein the replacement channel filtercoefficients include channel filter coefficients not identified based onthe threshold criteria.
 14. A system for creating a filter, comprising:means for sampling noise during an inter-frame gap of a received signal;means for sampling a data frame preamble from within a data frame of thereceived signal; and means for computing filter coefficients based onthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.
 15. The system of claim 14 whereinthe filter is structured and arranged to filter received signalscommunicated across power lines.
 16. The system of claim 14 furthercomprising means for synchronizing the received signal to identify thedata frame preamble.
 17. The system of claim 16 wherein the means forsynchronizing the received signal comprises: means for sampling arandomly located portion of the received signal; means for generating apre-filter based on the randomly located portion of the sampled receivedsignal; means for applying the pre-filter to the received signal; andmeans for identifying the data frame preamble based on the receivedsignal after applying the pre-filter.
 18. The system of claim 14 whereinthe means for computing the filter coefficients includes: means forgenerating noise filter coefficients from the noise sampled during theinter-frame gap; means for generating channel filter coefficients fromthe data frame preamble sampled from within the data frame; and meansfor generating the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 19. The system ofclaim 18 wherein the noise filter coefficients are generated from thenoise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.
 20. The system of claim 18 whereinthe means for generating the channel filter coefficients includes: meansfor identifying channel filter coefficients based on a thresholdcriteria; and means for updating the channel filter coefficients thatare identified based on the threshold criteria.
 21. The system of claim20 wherein the means for updating the channel filter coefficientsincludes means for performing an excision algorithm.
 22. The system ofclaim 20 wherein the means for updating the channel filter coefficientsincludes means for modifying the channel filter coefficients.
 23. Thesystem of claim 22 wherein the means for modifying the channel filtercoefficients includes means for reducing a magnitude of the channelfilter coefficients that are identified based on the threshold criteria.24. The system of claim 20 wherein the means for updating the channelfilter coefficients includes means for performing a smoothing algorithm.25. The system of claim 20 wherein the means for updating the channelfilter coefficients includes means for replacing the channel filtercoefficients with replacement channel filter coefficients.
 26. Thesystem of claim 25 wherein the replacement channel filter coefficientsinclude channel filter coefficients not identified based on thethreshold criteria.
 27. A computer program stored on a computer readablemedium or a propagated signal for creating a filter, comprising: asampling code segment that causes the computer to sample noise during aninter-frame gap of a received signal and to sample a data frame preamblefrom within a data frame of the received signal; and a computing codesegment that causes the computer to compute filter coefficients based onthe noise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.
 28. The computer program of claim 27wherein the filter is structured and arranged to filter received signalscommunicated across power lines.
 29. The computer program of claim 27further comprising a synchronizing code segment that causes the computerto synchronize the received signal to identify the data frame preamble.30. The computer program of claim 29 wherein the synchronizing codesegment includes: a sampling code segment that causes the computer tosample a randomly located portion of the received signal; a generatingcode segment that causes the computer to generate a pre-filter based onthe randomly located portion of the sampled received signal; an applyingcode segment that causes the computer to apply the pre-filter to thereceived signal; and an identifying code segment that causes thecomputer to identify the data frame preamble based on the receivedsignal after applying the pre-filter.
 31. The computer program of claim27 wherein the computing code segment includes: a first generating codesegment that causes the computer to generate noise filter coefficientsfrom the noise sampled during the inter-frame gap; a second generatingcode segment that causes the computer to generate channel filtercoefficients from the data frame preamble sampled from within the dataframe; and a third generating code segment that causes the computer togenerate the filter coefficients based on the noise filter coefficientsand the channel filter coefficients.
 32. The computer program of claim31 wherein the noise filter coefficients are generated from the noisesampled during the inter-frame gap and the data frame preamble sampledfrom within the data frame.
 33. The computer program of claim 31 whereinthe third generating code segment includes: an identifying code segmentthat causes the computer to identify channel filter coefficients basedon a threshold criteria; and an updating code segment that causes thecomputer to update the channel filter coefficients that are identifiedbased on the threshold criteria.
 34. The computer program of claim 33wherein the updating code segment includes a performing code segmentthat causes the computer to perform an excision algorithm.
 35. Thecomputer program of claim 33 wherein the updating code segment includesa modifying code segment that causes the computer to modify the channelfilter coefficients.
 36. The computer program of claim 35 wherein themodifying the code segment includes a reducing code segment that causesthe computer to reduce a magnitude of the channel filter coefficientsthat are identified based on the threshold criteria.
 37. The computerprogram of claim 33 wherein the updating code segment includes aperforming code segment that causes the computer to perform a smoothingalgorithm.
 38. The computer program of claim 33 wherein the updatingcode segment includes a replacing code segment that causes the computerto replace the channel filter coefficients with replacement channelfilter coefficients.
 39. The computer program of claim 38 wherein thereplacement channel filter coefficients include channel filtercoefficients not identified based on the threshold criteria.
 40. Amethod for adaptively filtering a data frame of a received signal, themethod comprising: generating coefficients for an adaptive filter basedon at least noise from within an inter-frame gap and a preamble of thedata frame; and filtering the data frame by applying the adaptive filterto the data frame.
 41. The method as in claim 40 wherein the data frameis communicated across power lines such that filtering the data frameincludes applying the adaptive filter to the data frame communicatedacross the power lines.
 42. The method as in claim 40 wherein generatingthe coefficients for the adaptive filter includes: sampling noise duringan inter-frame gap of a received signal; sampling a data frame preamblefrom within a data frame of the received signal; and computing filtercoefficients based on the noise sampled during the inter-frame gap andthe data frame preamble sampled from within the data frame.
 43. Themethod as in claim 42 further comprising synchronizing the receivedsignal to identify the data frame preamble.
 44. The method as in claim43 wherein synchronizing the received signal comprises: sampling arandomly located portion of the received signal; generating a pre-filterbased on the randomly located portion of the sampled received signal;applying the pre-filter to the received signal; and identifying the dataframe preamble based on the received signal after applying thepre-filter.
 45. The method as in claim 42 wherein computing the filtercoefficients includes: generating noise filter coefficients from thenoise sampled during the inter-frame gap; generating channel filtercoefficients from the data frame preamble sampled from within the dataframe; and generating the filter coefficients based on the noise filtercoefficients and the channel filter coefficients.
 46. The method as inclaim 45 wherein the noise filter coefficients are generated from thenoise sampled during the inter-frame gap and the data frame preamblesampled from within the data frame.
 47. The method as in claim 45wherein generating the channel filter coefficients includes: identifyingchannel filter coefficients based on a threshold criteria; and updatingthe channel filter coefficients that are identified based on thethreshold criteria.
 48. The method as in claim 47 wherein updating thechannel filter coefficients includes performing an excision algorithm.49. The method as in claim 47 wherein updating the channel filtercoefficients includes modifying the channel filter coefficients.
 50. Themethod as in claim 49 wherein modifying the channel filter coefficientsincludes reducing a magnitude of the channel filter coefficients thatare identified based on the threshold criteria.
 51. The method as inclaim 47 wherein updating the channel filter coefficients includesperforming a smoothing algorithm.
 52. The method as in claim 47 whereinupdating the channel filter coefficients includes replacing the channelfilter coefficients with replacement channel filter coefficients. 53.The method as in claim 52 wherein the replacement channel filtercoefficients include channel filter coefficients not identified based onthe threshold criteria.
 54. A system for adaptively filtering a dataframe of a received signal, comprising: means for generatingcoefficients for an adaptive filter based on at least noise from withinan inter-frame gap and a preamble of the data frame; and means forfiltering the data frame by applying the adaptive filter to the dataframe.
 55. The system of claim 54 wherein the data frame is communicatedacross power lines such that the means for filtering the data frameincludes means for applying the adaptive filter to the data framecommunicated across the power lines.
 56. The system of claim 54 whereinthe means for generating the coefficients for the adaptive filterincludes: means for sampling noise during an inter-frame gap of areceived signal; means for sampling a data frame preamble from within adata frame of the received signal; and means for computing filtercoefficients based on the noise sampled during the inter-frame gap andthe data frame preamble sampled from within the data frame.
 57. Thesystem of claim 56 wherein the filter is structured and arranged tofilter received signals communicated across power lines.
 58. The systemof claim 56 further comprising means for synchronizing the receivedsignal to identify the data frame preamble.
 59. The system of claim 58wherein the means for synchronizing the received signal comprises: meansfor sampling a randomly located portion of the received signal; meansfor generating a pre-filter based on the randomly located portion of thesampled received signal; means for applying the pre-filter to thereceived signal; and means for identifying the data frame preamble basedon the received signal after applying the pre-filter.
 60. The system ofclaim 56 wherein the means for computing the filter coefficientsincludes: means for generating noise filter coefficients from the noisesampled during the inter-frame gap; means for generating channel filtercoefficients from the data frame preamble sampled from within the dataframe; and means for generating the filter coefficients based on thenoise filter coefficients and the channel filter coefficients.
 61. Thesystem of claim 60 wherein the noise filter coefficients are generatedfrom the noise sampled during the inter-frame gap and the data framepreamble sampled from within the data frame.
 62. The system of claim 60wherein the means for generating the channel filter coefficientsincludes: means for identifying channel filter coefficients based on athreshold criteria; and means for updating the channel filtercoefficients that are identified based on the threshold criteria. 63.The system of claim 62 wherein the means for updating the channel filtercoefficients includes means for performing an excision algorithm. 64.The system of claim 62 wherein the means for updating the channel filtercoefficients includes means for modifying the channel filtercoefficients.
 65. The system of claim 64 wherein the means for modifyingthe channel filter coefficients includes means for reducing a magnitudeof the channel filter coefficients that are identified based on thethreshold criteria.
 66. The system of claim 62 wherein the means forupdating the channel filter coefficients includes means for performing asmoothing algorithm.
 67. The system of claim 62 wherein the means forupdating the channel filter coefficients includes means for replacingthe channel filter coefficients with replacement channel filtercoefficients.
 68. The system of claim 67 wherein the replacement channelfilter coefficients include channel filter coefficients not identifiedbased on the threshold criteria.
 69. A computer program stored on acomputer readable medium or a propagated signal for adaptively filteringa data frame of a received signal, comprising: a generating code segmentthat causes the computer to generate coefficients for an adaptive filterbased on at least noise from within an inter-frame gap and a preamble ofthe data frame; and a filtering code segment that causes the computer tofilter the data frame by applying the adaptive filter to the data frame.70. The computer program of claim 69 wherein the data frame iscommunicated across power lines such that the filtering code segmentcauses the computer to apply the adaptive filter to the data framecommunicated across the power lines.
 71. The computer program of claim69 wherein the generating code segment includes: a sampling code segmentthat causes the computer to sample noise during an inter-frame gap of areceived signal and to sample a data frame preamble from within a dataframe of the received signal; and a computing code segment that causesthe computer to compute filter coefficients based on the noise sampledduring the inter-frame gap and the data frame preamble sampled fromwithin the data frame.
 72. The computer program of claim 71 wherein thefilter is structured and arranged to filter received signalscommunicated across power lines.
 73. The computer program of claim 71further comprising a synchronizing code segment that causes the computerto synchronize the received signal to identify the data frame preamble.74. The computer program of claim 73 wherein the synchronizing codesegment includes: a sampling code segment that causes the computer tosample a randomly located portion of the received signal; a generatingcode segment that causes the computer to generate a pre-filter based onthe randomly located portion of the sampled received signal; an applyingcode segment that causes the computer to apply the pre-filter to thereceived signal; and an identifying code segment that causes thecomputer to identify the data frame preamble based on the receivedsignal after applying the pre-filter.
 75. The computer program of claim71 wherein the computing code segment includes: a first generating codesegment that causes the computer to generate noise filter coefficientsfrom the noise sampled during the inter-frame gap; a second generatingcode segment that causes the computer to generate channel filtercoefficients from the data frame preamble sampled from within the dataframe; and a third generating code segment that causes the computer togenerate the filter coefficients based on the noise filter coefficientsand the channel filter coefficients.
 76. The computer program of claim75 wherein the noise filter coefficients are generated from the noisesampled during the inter-frame gap and the data frame preamble sampledfrom within the data frame.
 77. The computer program of claim 75 whereinthe third generating code segment includes: an identifying code segmentthat causes the computer to identify channel filter coefficients basedon a threshold criteria; and an updating code segment that causes thecomputer to update the channel filter coefficients that are identifiedbased on the threshold criteria.
 78. The computer program of claim 77wherein the updating code segment includes a performing code segmentthat causes the computer to perform an excision algorithm.
 79. Thecomputer program of claim 77 wherein the updating code segment includesa modifying code segment that causes the computer to modify the channelfilter coefficients.
 80. The computer program of claim 79 wherein themodifying the code segment includes a reducing code segment that causesthe computer to reduce a magnitude of the channel filter coefficientsthat are identified based on the threshold criteria.
 81. The computerprogram of claim 77 wherein the updating code segment includes aperforming code segment that causes the computer to perform a smoothingalgorithm.
 82. The computer program of claim 77 wherein the updatingcode segment includes a replacing code segment that causes the computerto replace the channel filter coefficients with replacement channelfilter coefficients.
 83. The computer program of claim 82 wherein thereplacement channel filter coefficients include channel filtercoefficients not identified based on the threshold criteria.
 84. Afilter derived from a combination of coefficients, the coefficients usedto derive the filter comprising: coefficients derived from noise sampledduring a period between data frames and a received data frame preamble;and coefficients derived from the received data frame preamble and atransmitted data frame preamble.
 85. The filter of claim 84 wherein thecoefficients derived from the noise include an average of thecoefficients derived from the noise over a period of time.
 86. Thefilter of claim 84 wherein the coefficients derived from the receiveddata frame preamble include an average of the coefficients derived fromthe data frame preamble over a period of time.
 87. The filter of claim84 wherein the filter derived from the combination of the coefficientsincludes an average of the filters derived from the combination of thecoefficients over a period of time.
 88. The filter of claim 84 whereinthe coefficients derived from the noise include an average of the noiseover a period of time.
 89. The filter of claim 84 wherein thecoefficients derived from the received data frame preamble include anaverage of the data frame preamble over a period of time.
 90. A methodfor receiving a signal transmitted through at least first and secondcommunication paths over a single communication medium, the methodcomprising: sampling the signal over the communication paths to realizea first sampling from the first communication path and a second samplingfrom the second communication path; synchronizing the first sampling andthe second sampling; and combining the first sampling and the secondsampling to generate a signal representative of the signal transmittedthrough the first and second communication paths.
 91. The method as inclaim 90 wherein synchronizing the first sampling and the secondsampling includes: independently synchronizing the first sampling andthe second sampling; and adjusting for a delay difference between thefirst and the second communication paths based on the independentsynchronization of the first sampling and the second sampling.
 92. Themethod as in claim 90 wherein the first communication path includesline-neutral path.
 93. The method as in claim 90 wherein the secondcommunication path includes a neutral-ground path.
 94. A system forreceiving a signal transmitted through at least first and secondcommunication paths over a single communication medium, comprising:means for sampling the signal over the communication paths to realize afirst sampling from the first communication path and a second samplingfrom the second communication path; means for synchronizing the firstsampling and the second sampling; and means for combining the firstsampling and the second sampling to generate a signal representative ofthe signal transmitted through the first and second communication paths.95. The system of claim 94 wherein the means for synchronizing the firstsampling and the second sampling includes: means for independentlysynchronizing the first sampling and the second sampling; and means foradjusting for a delay difference between the first and the secondcommunication paths based on the independent synchronization of thefirst sampling and the second sampling.
 96. The system of claim 94wherein the first communication path includes line-neutral path.
 97. Thesystem of claim 94 wherein the second communication path includes aneutral-ground path.
 98. A computer program stored on a computerreadable medium or a propagated signal for receiving a signaltransmitted through at least first and second communication paths over asingle communication medium, comprising: a sampling code segment thatcauses the computer to sample the signal over the communication paths torealize a first sampling from the first communication path and a secondsampling from the second communication path; a synchronizing codesegment that causes the computer to synchronize the first sampling andthe second sampling; and a combining code segment that causes thecomputer to combine the first sampling and the second sampling togenerate a signal representative of the signal transmitted through thefirst and second communication paths.
 99. The computer program of claim98 wherein the synchronizing code segment causes the computer to:independently synchronize the first sampling and the second sampling;and adjust for a delay difference between the first and the secondcommunication paths based on the independent synchronization of thefirst sampling and the second sampling.
 100. The computer program ofclaim 98 wherein the first communication path includes line-neutralpath.
 101. The computer program of claim 98 wherein the secondcommunication path includes a neutral-ground path.
 102. A method ofpre-filtering a received signal to improve synchronization, the methodcomprising: sampling a randomly located portion of the received signal;generating a pre-filter based on the randomly located portion of thesampled received signal; applying the pre-filter to the received signal;and identifying a data frame preamble based on the received signal afterapplying the pre-filter to improve synchronization.
 103. The method asin claim 102 wherein: sampling the randomly located portion of thereceived signal includes sampling within noise; and generating thepre-filter includes generating the pre-filter based on the samplednoise.
 104. The method as in claim 103 wherein the received signalincludes data and noise.
 105. The method as in claim 102 whereinsampling the randomly located portion of the received signal includessampling a portion of the received signal at a randomly selectedlocation.
 106. The method as in claim 102 wherein the pre-filterincludes a hybrid prediction filter that produces a desired response asan inverse of a value related to a portion of the received signal. 107.A system of pre-filtering a received signal to improve synchronization,comprising: means for sampling a randomly located portion of thereceived signal; means for generating a pre-filter based on the randomlylocated portion of the sampled received signal; means for applying thepre-filter to the received signal; and means for identifying a dataframe preamble based on the received signal after applying thepre-filter to improve synchronization.
 108. The system of claim 107wherein: the means for sampling the randomly located portion of thereceived signal includes means for sampling within noise; and the meansfor generating the pre-filter includes means for generating thepre-filter based on the sampled noise.
 109. The system of claim 108wherein the received signal includes data and noise.
 110. The system ofclaim 107 wherein the means for sampling the randomly located portion ofthe received signal includes means for sampling a portion of thereceived signal at a randomly selected location.
 111. The system ofclaim 107 wherein the pre-filter includes a hybrid prediction filterthat produces a desired response as an inverse of a value related to aportion of the received signal.
 112. A computer program stored on acomputer readable medium or a propagated signal for pre-filtering areceived signal to improve synchronization, comprising: a sampling codesegment that causes the computer to sample a randomly located portion ofthe received signal; a generating code segment that causes the computerto generate a pre-filter based on the randomly located portion of thesampled received signal; an applying code segment that causes thecomputer to apply the pre-filter to the received signal; and anidentifying code segment that causes the computer to identify a dataframe preamble based on the received signal after applying thepre-filter to improve synchronization.
 113. The computer program ofclaim 112 wherein: the sampling code segment causes the computer tosample within noise; and the generating code segment causes the computerto generate the pre-filter based on the sampled noise.
 114. The computerprogram of claim 113 wherein the received signal includes data andnoise.
 115. The computer program of claim 112 where in the sampling codesegment causes the computer to sample a portion of the received signalat a randomly selected location.
 116. The computer program of claim 112wherein the pre-filter includes a hybrid prediction filter that producesa desired response as an inverse of a value related to a portion of thereceived signal.